package org.lestr.secuel.m3ds;

import org.lestr.secuel.m3ds.animations.AnimationObjets2D;
import org.lestr.secuel.m3ds.animations.AnimationObjets3D;
import org.lestr.secuel.m3ds.animations.CleObjet2D;
import org.lestr.secuel.m3ds.animations.CleObjet3D;
import org.lestr.secuel.m3ds.lumieres.Ampoule;
import org.lestr.secuel.m3ds.lumieres.LumiereAmbiante;
import org.lestr.secuel.m3ds.lumieres.Spot;
import org.lestr.secuel.m3ds.maths.IPoint3d;
import org.lestr.secuel.m3ds.maths.IPoint2d;
import org.lestr.secuel.m3ds.maths.IVecteur2d;
import org.lestr.secuel.m3ds.maths.IVecteur3d;
import org.lestr.secuel.m3ds.objets2D.IImage;
import org.lestr.secuel.m3ds.objets2D.IPixel;
import org.lestr.secuel.m3ds.objets3D.IDimensionObjet3d;
import org.lestr.secuel.m3ds.objets3D.IDimensionTexture;
import org.lestr.secuel.m3ds.objets3D.Materiau;
import org.lestr.secuel.m3ds.objets3D.IObjet3d;
import org.lestr.secuel.m3ds.objets3D.IOrientationObjet3d;
import org.lestr.secuel.m3ds.objets3D.IPositionObjet3d;
import org.lestr.secuel.m3ds.objets3D.IPositionTexture;
import org.lestr.secuel.m3ds.objets3D.ISommet;
import org.lestr.secuel.m3ds.objets3D.IApparence;
import org.lestr.secuel.m3ds.objets3D.ITriangle;

public interface IUsine {


    String obtenirNom();


    Parametres obtenirParamètres();


    IPoint2d point2d();


    IPoint2d point2d(IPoint2d point2d);


    IPoint2d point2d(double x,
                     double y);


    IVecteur2d vecteur2d();


    IVecteur2d vecteur2d(IPoint2d point2d);


    IVecteur2d vecteur2d(double x,
                         double y);


    IPoint3d point3d();


    IPoint3d point3d(double x,
                     double y,
                     double z);


    IPoint3d point3d(IPoint3d point3d);


    IVecteur3d vecteur3D();


    IVecteur3d vecteur3D(double x,
                         double y,
                         double z);


    IPositionObjet3d positionObjet3d(IObjet3d objet3d);


    IPositionObjet3d positionObjet3d(IObjet3d objet3d,
                                     IPoint3d point3d);


    IPositionObjet3d positionObjet3d(IObjet3d objet3d,
                                     double x,
                                     double y,
                                     double z);


    IOrientationObjet3d orientationObjet3d(IObjet3d objet3d);


    IOrientationObjet3d orientationObjet3d(IObjet3d objet3d,
                                           IPoint3d point3d);


    IOrientationObjet3d orientationObjet3d(IObjet3d objet3d,
                                           double x,
                                           double y,
                                           double z);


    IDimensionObjet3d dimensionObjet3d(IObjet3d objet3d);


    IDimensionObjet3d dimensionObjet3d(IObjet3d objet3d,
                                       IPoint3d point3d);


    IDimensionObjet3d dimensionObjet3d(IObjet3d objet3d,
                                       double x,
                                       double y,
                                       double z);


    ITriangle triangle();


    ITriangle triangle(IPoint3d sommet1,
                       IPoint3d sommet2,
                       IPoint3d sommet3);


    ISommet sommet(ITriangle triangle);


    ISommet sommet(ITriangle triangle,
                   IPoint3d point3d);


    ISommet sommet(ITriangle triangle,
                   double x,
                   double y,
                   double z);


    IObjet3d plan();


    IObjet3d cube();


    IObjet3d sphère(int résolution);


    IObjet3d cylindre(int résolution);


    IObjet3d cône(int résolution);


    IPixel pixel();


    IImage getImage(int largeur,
                    int hauteur);


    Affichage affichage();


    Univers univers();


    Camera caméra();


    IObjet3d objet3D();


    IApparence texture(IObjet3d objet3d);


    IPositionTexture positionTexture(IApparence texture);


    IDimensionTexture dimensionTexture(IApparence texture);


    Materiau matériau();


    AnimationObjets2D animationObjet2D();


    public AnimationObjets3D animationObjet3D();


    CleObjet2D cléObjet2D();


    CleObjet3D cléObjet3D();


    LumiereAmbiante lumièreAmbiante();


    Ampoule ampoule();


    Spot spot();


}// FIN Interface
